Managing customer-specific features for a complex software system, i.e., “provisioning,” can be a very cumbersome process, as it typically requires back and forth communication between a customer and a customer service/project systems (CS/PS) team. In conventional approaches, the customer creates a feature change request to the CS/PS team, the CS/PS team verifies that the customer has purchased the particular feature, and the CS/PS team then processes or rejects the request. These tasks increase the burden on the CS/PS organization and may result in a long turnaround time user's feature addition request.
Typically, the customer is unable to add features through a self-service process due to the complexities of the provisioning system. For example, conventional provisioning tools are not user-friendly and are therefore difficult for customers to use directly. Another difficulty is that feature names may not be consistent. For example, “metadata framework (MDF)” and “Generic Object” are different names referring to the same feature. This may result in inconsistency in enabling the essential components of the feature, which can result in further problems. Also, the features may not appear in a logical order and may not be grouped consistently. This may result in a situation in which the details of a feature are listed in a different section of the configuration. Users who are not familiar with the particular feature may miss such details, which can result in a loss of functionality. Further difficulties may arise because enabling a feature typically requires looking up any dependent features and enabling them as well. For example, if a user wants to enable “Intelligent Service Center” (ISC), then the user must also enable “Generic Objects,” “Intelligent Services,” “Business Process Engine,” and “Attachment Manager.” These dependent features may be in scattered locations in the provisioning configuration interface, which can make finding them difficult.